#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
验证两个导出功能的独立性
检查配置、文件名、进度文件等是否完全独立
"""

from config import (
    MONGODB_CONFIG, EXPORT_CONFIG, CSV_HEADERS,
    ROOM_MONGODB_CONFIG, ROOM_EXPORT_CONFIG, ROOM_CSV_HEADERS
)


def check_config_independence():
    """检查配置独立性"""
    print("\n" + "=" * 70)
    print("配置独立性验证")
    print("=" * 70)
    
    issues = []
    
    # 检查集合名称
    print("\n1. 检查MongoDB集合名称...")
    hotel_collection = MONGODB_CONFIG['collection_name']
    room_collection = ROOM_MONGODB_CONFIG['collection_name']
    print(f"   设施导出集合: {hotel_collection}")
    print(f"   房型导出集合: {room_collection}")
    
    if hotel_collection == room_collection:
        issues.append("[WARNING] 两个导出使用相同的集合名称！")
        print("   [ERROR] 集合名称相同")
    else:
        print("   [OK] 集合名称不同（独立）")
    
    # 检查CSV文件名
    print("\n2. 检查CSV文件名...")
    hotel_csv_files = set(EXPORT_CONFIG['csv_files'].values())
    room_csv_files = set(ROOM_EXPORT_CONFIG['csv_files'].values())
    print(f"   设施导出文件: {hotel_csv_files}")
    print(f"   房型导出文件: {room_csv_files}")
    
    overlap = hotel_csv_files & room_csv_files
    if overlap:
        issues.append(f"[WARNING] CSV文件名有重叠：{overlap}")
        print(f"   [ERROR] 文件名有重叠：{overlap}")
    else:
        print("   [OK] 文件名不重叠（独立）")
    
    # 检查输出目录
    print("\n3. 检查输出目录...")
    hotel_output = EXPORT_CONFIG['output_dir']
    room_output = ROOM_EXPORT_CONFIG['output_dir']
    print(f"   设施导出目录: {hotel_output}")
    print(f"   房型导出目录: {room_output}")
    
    if hotel_output == room_output:
        print("   [INFO] 两个导出使用相同的输出目录（这是正常的）")
    else:
        print("   [INFO] 使用不同的输出目录")
    
    # 检查进度文件目录
    print("\n4. 检查进度文件目录...")
    hotel_progress = EXPORT_CONFIG['progress_dir']
    room_progress = ROOM_EXPORT_CONFIG['progress_dir']
    print(f"   设施导出进度目录: {hotel_progress}")
    print(f"   房型导出进度目录: {room_progress}")
    
    if hotel_progress == room_progress:
        print("   [INFO] 两个导出使用相同的进度目录（通过session_name区分）")
    else:
        print("   [INFO] 使用不同的进度目录")
    
    # 检查日志目录
    print("\n5. 检查日志目录...")
    hotel_log = EXPORT_CONFIG['log_dir']
    room_log = ROOM_EXPORT_CONFIG['log_dir']
    print(f"   设施导出日志目录: {hotel_log}")
    print(f"   房型导出日志目录: {room_log}")
    
    if hotel_log == room_log:
        print("   [INFO] 两个导出使用相同的日志目录（通过不同文件名区分）")
    else:
        print("   [INFO] 使用不同的日志目录")
    
    # 总结
    print("\n" + "=" * 70)
    if issues:
        print("验证结果：发现以下问题")
        print("=" * 70)
        for issue in issues:
            print(issue)
    else:
        print("验证结果：[SUCCESS] 配置完全独立，可以安全使用！")
        print("=" * 70)
    
    return len(issues) == 0


def show_usage_info():
    """显示使用信息"""
    print("\n" + "=" * 70)
    print("使用说明")
    print("=" * 70)
    
    print("\n【设施数据导出】")
    print("  集合：CtripHotelBaseInfo")
    print("  运行：python main.py")
    print("  进度：python test_resume.py")
    print("  输出：基本设施.csv, 设施集合.csv")
    
    print("\n【房型数据导出】")
    print("  集合：CtripRoomBaseInfo")
    print("  运行：python export_room.py")
    print("  进度：python test_room_resume.py")
    print("  输出：基本床型信息.csv, 复杂床型信息.csv")
    
    print("\n【测试配置】")
    print("  设施导出限制：", EXPORT_CONFIG.get('test_limit', 'None（全量）'))
    print("  房型导出限制：", ROOM_EXPORT_CONFIG.get('test_limit', 'None（全量）'))
    
    if ROOM_EXPORT_CONFIG.get('test_limit'):
        print(f"\n  [NOTE] 房型导出当前为测试模式（限制{ROOM_EXPORT_CONFIG['test_limit']}条）")
        print("  提示：测试完成后，在 config.py 中将 test_limit 改为 None")
    
    print("\n【同时运行】")
    print("  [OK] 可以同时运行两个导出程序")
    print("  [OK] 它们完全独立，互不干扰")
    
    print("\n" + "=" * 70)


def main():
    """主函数"""
    print("\n" + "=" * 70)
    print("房型导出与设施导出独立性验证工具")
    print("=" * 70)
    
    # 检查配置独立性
    is_independent = check_config_independence()
    
    # 显示使用信息
    show_usage_info()
    
    # 返回状态
    return 0 if is_independent else 1


if __name__ == '__main__':
    import sys
    sys.exit(main())

